/**
 * 聊天WebSocket管理器
 * 处理聊天相关的实时通知
 */

// 保存对io实例的引用
let ioInstance;

/**
 * 初始化WebSocket管理器
 * @param {Object} io Socket.io实例
 */
const initialize = (io) => {
  ioInstance = io;
  console.log('聊天WebSocket管理器已初始化');
};

/**
 * 向指定用户发送聊天列表更新通知
 * @param {String} uuid 用户UUID
 * @param {Object} data 更新的数据
 */
const notifyChatHistoryUpdate = (uuid, data) => {
  if (!ioInstance) {
    console.warn('WebSocket实例未初始化，无法发送通知');
    return;
  }

  console.log(`发送聊天列表更新通知给用户: ${uuid}`);
  console.log('WebSocket发送数据详情:', JSON.stringify({
    event: 'chat-history-update',
    recipient: uuid,
    data: data,
    timestamp: new Date().toISOString()
  }, null, 2));
  const payload = { updatya: true };
  console.log('实际发送给前端的数据:', JSON.stringify(payload, null, 2));
  ioInstance.to(uuid).emit('chat-history-update', payload);
};

/**
 * 向指定用户发送特定聊天记录更新通知
 * @param {String} uuid 用户UUID
 * @param {String} aiPersonId AI人物ID
 * @param {Object} data 更新的数据
 */
const notifySpecificChatUpdate = (uuid, aiPersonId, data) => {
  if (!ioInstance) {
    console.warn('WebSocket实例未初始化，无法发送通知');
    return;
  }

  console.log(`发送聊天记录更新通知给用户: ${uuid}, AI: ${aiPersonId}`);
  console.log('WebSocket发送数据详情:', JSON.stringify({
    event: 'specific-chat-update',
    recipient: uuid,
    aiPersonId: aiPersonId,
    data: data,
    timestamp: new Date().toISOString()
  }, null, 2));
  const payload = { updatya: true };
  console.log('实际发送给前端的数据:', JSON.stringify(payload, null, 2));
  ioInstance.to(uuid).emit('specific-chat-update', payload);
};

/**
 * 发送聊天历史列表刷新通知
 * @param {String} uuid 用户UUID
 * @param {Array} chatHistoryList 聊天历史列表数据（仅用于计算数量）
 */
const notifyFullChatHistoryList = (uuid, chatHistoryList) => {
  if (!ioInstance) {
    console.warn('WebSocket实例未初始化，无法发送通知');
    return;
  }

  console.log(`发送聊天历史列表刷新通知给用户: ${uuid}, 共${chatHistoryList.length}条记录`);
  console.log('WebSocket发送数据详情:', JSON.stringify({
    event: 'chat-history-list-update',
    recipient: uuid,
    data: {
      flushed: true
    },
    timestamp: new Date().toISOString()
  }, null, 2));
  const payload = { updatya: true };
  console.log('实际发送给前端的数据:', JSON.stringify(payload, null, 2));
  ioInstance.to(uuid).emit('chat-history-list-update', payload);
};

module.exports = {
  initialize,
  notifyChatHistoryUpdate,
  notifySpecificChatUpdate,
  notifyFullChatHistoryList
};